Skip to content

fix(dag): synthesize final-gate binding and review gate error wording - #306

Merged
LeXwDeX merged 1 commit into
devfrom
fix/final-gate-binding
Aug 16, 2026
Merged

fix(dag): synthesize final-gate binding and review gate error wording#306
LeXwDeX merged 1 commit into
devfrom
fix/final-gate-binding

Conversation

@LeXwDeX

@LeXwDeX LeXwDeX commented Aug 16, 2026

Copy link
Copy Markdown
Owner

Closes #304 and #305 — both discovered by live end-to-end testing of v1.0.21.

#304 — false unresolved_reviews after ACCEPT

workflow(action="status") reported unresolved_reviews for a diff review that settled ACCEPT and completed the graph. Root cause: finalReviewGates requires the final gate to map the review's output; the block compiler emitted the follow-up synthesize with no input_mapping, so no gate was ever found and an ACCEPTed review stayed "unresolved" forever. Same contract-vs-binding pattern as the pre-#299 verify gap.

Fix: a synthesize depending on a review now binds that review's output into its input_mapping (its condition is already <review>.output.verdict == "ACCEPT"), satisfying all three finalReviewGates axes. Side effect: block routes shaped … → review → synthesize become valid under deep-mode validateFinalReviewGate too, removing the mode cliff.

Tests: new compile-seam case asserts the binding exists (and is absent without a review dependency); existing unresolvedReviewOutcomes cases already prove the resolver accepts this shape.

#305 — gate message claimed "deep workflow" in all modes

ReviewGateError wording dropped the unsupported mode claim (gate behavior unchanged). The wake-integration test now pins the message free of the "deep workflow" wording.

Verification

  • 550 DAG/tool tests green (72 focused), bun typecheck clean.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant